HI Jackin'!" - praca zbiorowa BuraQ tim'u. Michal Wojcik (michalw@irad.kul.lublin.pl) wrote: : Interesuje mnie problem hijackingu, czyli inaczej przejecia sesji : jakiejs maszyny unixowej. Interesuje mnie mechanizm takiego dzialania i : wszystkie szczegoly. Hijacking - ang. porywanie/przechwytywanie moze w tym przypadku miec kilka znaczen. Najbardziej znanym przykladem ``hijackingu'' jest wszystkim nam znany ``hijacking zamolotow''. Chyba wszyscy wiemy na jakiej zasadzie dzialaja porywacze. Przebieraja sie za stare babcie, kobiety w ciazy a takze za dzieci. Ma to za zadanie ukazac brodatych mezczyzn oraz przewaznie barczyste kobiety w innym swietle. Maja zostac nierozpoznani. Dziala to mniej wiecej tak. Niech celnik bedzie obiektem A a porywacz obiektem B. Obiekt A jest po to aby pilnowac samoloty odlatujace z pewnego bliskowschodniego kraju C przed obiektami typu B. (W rzeczywistosci typ A = administrator, a typ B = chaker, podczas, gdy typ C = serwer). Zalozmy ze typ B przebiera sie za staruszke skrzetnie ukrywajac twarz (ahh... ten czarny zarost .. pewnie sie nie poznaja ..), wchodzi do poczekalni gdzie mu ustepuja wszyscy miejsca, obiekt B traci zelazne nerwy, zaczyna popelniac bledy. Nie podpiera sie laska podczas chodzenia, mowi basem itp. itd. Zalozmy ze nasz obiekt typu B szczesliwie (?) doszedl do bramki gdzie oczekuje na niego obiekt typu A. I co sie dzieje? Na pytania typu: ``Dlaczego babcia ma taki duzy zarost'' odpowiada ``Bo od malego lecialam na piguly''(Hi DkA :). Obiekt A zaczyna myslec.. Mysli mysli mysli .. I do czego dochodzi? Ze to jakis fejk. Straszne nie? Tyle przygotowan , tyle strachu... I wszystko na nic .. Obiekt B zostaje zabrany na osobista kontrol. Obiekty typu A dostaja zawau na widok umiesnionej staruszki z zarostem na piersiach. Obietki typu A szaleja na widok przyrodzenia staruszki (ahhh Ci biali inaczej .....). Hijacking sie udal, babcia spokojnie udaje sie w kierunku obiektu C. Tam to sie bedzie dzialo .. ale to juz inna bajka ... =M.a.4.7= / BuraQ Team A teraz kilka slow nt. hijackingu od.. tego, no... jak mu tam.. a! mnie!: Jako hijacking mozemy tez rozumiec TCP Hijacking, czyli metode pozwalajaca na przejecie polaczenia TCP miedzy dwoma maszynami, z ktorych najczesciej przynajmniej jedna polozona jest w tej samej sieci lokalnej, co atakujacy. (dzieki czemu moze on odbierac pakiety adresowane do i wysylane z tejze maszyny). Innymi slowy, jest to przyklad spoofingu polaczonego ze sniffingiem (badz z jakakolwiek inna mozliwoscia ustalenia numerow SYN/ACK, ktore to numery - zawarte w naglowku protokolu TCP - sluza niezawodnej transmisji jak tez potwierdzeniu autentykacji zrodla przychodzacych pakietow). Termin TCP Hijacking nazywany jest generalnie TELNET Hijacking, mimo, ze odnosi sie do dowolnej aplikacji korzystajacej z protokolu TCP. (ten rodzaj spoofingu jest mozliwy takze np. w polaczeniach radiowych z wykorzystaniem protokolu AX25 jako drugiej warstwy modelu ISO OSI). Jesli oznaczymy atakujacego jako A, a maszyny miedzy ktorymi nawiazane jest polaczenie B i C (w tym przykladzie B jest w tej samej podsieci co A), to jesli A ustawi karte sieciowa w promiscuous mode, moze odbierac pakiety adresowane do innych maszyn w swojej podsieci, tym samym takze do B. W ten sposob moze on ustalic numery SYN/ACK polaczenia miedzy B i C, i jesli bedzie wysylal pakiety do maszyny C jako maszyna B korzystajac z tych numerow, maszyna C uzna je za wlasciwe, a wlasciwe polaczenie po chwili zostanie zdesynchronizowane. Atak ten jest bardzo przejzyscie opisany w dokumencie spoofit: http://main.succeed.net/~coder/spoofit/spoofit.html, polecam. Hijacking moze miec takie odniesienie lokalne - jako przyklad ataku sluzacego do przechwycenia konkretnej sesji uzytkownika (TTY Hijacking). W przypadku systemow z rodziny SystemV mozemy skorzystac ze STREAMS (strumieni) - przykladem takiego programu dla systemu SunOS jest TAP - jednak latwo wykrywalny przez program systemowy 'modstat'. W Phracku 50tym jeden z artykolow pokazal, jak cos takiego zrobic za pomoca ladowalnych modulow (na przykladzie Linuxa), natomiast w Phracku 51 opisana byla ciekawa metoda w jaki sposob zrobic to samo korzystajac z dostepu do pamieci za pomoca device'a /dev/kmem, (przy wykorzystaniu praw roota, badz grupy kmem [mem] w niektorych systemach). Korzystajac z tej metody mozliwe jest przechwytywanie deskryptorow plikow, grzebiac bezposrednio w tablicy deskryptorow pamieci kernela. Poza przechwytywaniem mozliwa jest takze ich duplikacja i takie tam ... Jeszcze inne przyklady Hijackingu moga dotyczyc innych protokolow sieciowych (np. w przypadku UDP sama forma ataku zalezna bedzie od zastosowanego rozwiazania w konkretnym programie. Przykladem tego jest NFS Hijacking). Galek Anonymousek / BuraQ team O czym jest ten tekst ? Linux jest wydajnym, w pe│ni 32 bitowym systemem, znakomicie dzia│aj╣cym w sieciach. Zalet wynikaj╣cych z mo┐liwo£ci korzystania np. z Internetu nie trzeba chyba nikomu t│umaczyµ. Nie ma chyba jednak rozwi╣za± doskona│ych, tote┐ u┐ytkownik (a tym bardziej administrator systemu), powinni zdawaµ sobie sprawΩ z pewnych zagro┐e± na jakie mog╣ natkn╣µ siΩ w momencie po│╣czenia siΩ ze £wiatem. Dokument ten ma praktyczne zastosowanie w sieciach TCP/IP powinien wiΩc znakomicie s│u┐yµ Linuxom pracuj╣cym w Internecie. Poruszona tu zostanie wiΩkszo£µ zagadnie± zwi╣zanych z bezpiecze±stwem systemu (na tyle na ile pozwala mi moja obecna wiedza). Mo┐liwe jednak, ┐e niekt≤re rzeczy wyja£niΩ niezbyt precyzyjnie; niekt≤re sprawy zostan╣ wrΩcz tylko zasygnalizowane. Zajrzyj w razie potrzeby do odpowiednich dokumentacji po niezbΩdne szczeg≤│y. -------------------------------------------------------------------------------- Zale┐y mi aby tekst ten by│ '100% bugs free'. Dlatego w przypadku wykrycia jakiegokolwiek b│Ωdu lub powa┐nej nie£cis│o£ci proszΩ o dok│adn╣ informacjΩ na ten temat. -------------------------------------------------------------------------------- Jakie podstawowe rzeczy muszΩ wiedzieµ ? Nie trzeba wielkiej wiedzy. Przede wszystkim pamiΩtaj, ┐e pojΩcie 'po│╣czen ze £wiatem' oznacza zwykle (w przypadku domy£lnie skonfigurowanych, niezabezpieczonych system≤w) praktycznie nie kontrolowan╣ komunikacjΩ w obie strony. Tak wiΩc o ile komputer A mo┐e po│╣czyµ siΩ z dowolnym komputerem na globie, o tyle DOWOLNY komputer ma mo┐liwo£µ po│╣czenia siΩ z komputerem A. Wobec tego szansa, ┐e komu£ uda siΩ w│amaµ do komputera A jest bardzo du┐a. Dobrze jest te┐ wiedzieµ, ┐e potencjalnym w│amywaczem mo┐e byµ u┐ytkownik, kt≤remu sam za│o┐y│e£ konto u siebie. Nie oka┐ siΩ wiΩc zbyt naiwnym adminem. -------------------------------------------------------------------------------- Jakie s╣ rodzaje w│ama± ? Rodzaje w│ama± podzieli│em na dwie grupy: 1) poprzez wykorzystanie us│ug zdalnych udostΩpnianych przez serwer 2) poprzez przechwycenie has│a i wykorzystanie dziur w systemie od wewn╣trz (czyli jako legalny u┐ytkownik systemu). Og≤lnie rzecz bior╣c w pierwszym przypadku zak│adam, ┐e hacker nie posiada konta na serwerze, na kt≤ry chce siΩ w│amaµ. Jest to du┐o trudniejsze zadanie. Dlatego czΩsto stosuje siΩ mieszane metody. Wyobraƒ sobie nastΩpuj╣c╣ przyk│adow╣ sytuacjΩ. Za│≤┐my, ┐e w│amano siΩ na komputer A z zewn╣trz (np. wykorzystano fakt, ┐e komputer obs│ugiwany by│ przez bardzo star╣ wersjΩ sendmaila pe│n╣ b│Ωd≤w). NastΩpnie LEGALNY u┐ytkownik z komputera A loguje siΩ na Twoja maszynΩ stosu╣╣c niekodowane po│╣czenie (np. popularnym telnetem lub rloginem). Istnieje mo┐liwo£µ przechwycenia po drodze ci╣gu znak≤w, reprezentuj╣cych has│o u┐ytkownika na TWOIM (!!!) systemie (has│o jest oczywi£cie wysy│ane z komputera A). Teraz znaj╣c has│o tego u┐ytkownika, hacker loguje siΩ bez najmniejszych przeszk≤d na Tw≤j serwer i... tak tak masz k│opoty je£li nie zabezpieczy│e£ serwera od £rodka. Zwr≤µ uwagΩ, ┐e nie ma w tym momencie znaczenia czy udostΩpniasz £wiatu jakiekolwiek us│ugi. Zostaje oszukana procedura identyfikuj╣ca zaufanego u┐ytkownika. -------------------------------------------------------------------------------- OK. Jak wiΩc zabezpieczyµ system ? 1) Na pocz╣tku okre£l dok│adnie jakie us│ugi maj╣ byµ udostΩpniane z Twojego serwera. Domy£lnie Linux udostΩpnia £wiatu wiΩcej us│ug ni┐ jest to potrzebne w wiΩkszo£ci typowych zastosowa±. Wszystkie zbΩdne us│ugi nale┐y wy│╣czyµ (czyli usun╣µ, lub zignorowaµ znakiem # w pliku /etc/inetd.conf ). NastΩpnie ponownie uruchom inetd z now╣ konfiguracj╣. 2) Programy obs│uguj╣ce wybrane serwisy (tzw. demony) powinny zostaµ zaktualizowane. Powiniene£ wiΩc zaopatrzyµ siΩ w ich najnowsze wersje. Przed instalacj╣ zawsze sprawdzaj sumy kontrolne PGP !!! S│ynny jest przypadek podmienienia pakietu ssh na jednym z bardzo popularnych polskich serwer≤w FTP. Zapoznaj siΩ dok│adnie z odpowiedni╣ dokumentacj╣ do ka┐dego serwisu. To umo┐liwi Ci poprawne skonfigurowanie. 3) WszΩdzie gdzie to mo┐liwe stosuj po│╣czenia szyfrowane (SSH, SSL). DziΩki temu zminimalizujesz ryzyko np. przechwycenia hase│ snifferem. Staraj siΩ aby has│a Twoich u┐ytkownik≤w by│y do£µ skomplikowane oraz ┐eby czΩsto ulega│y zmianie. Mo┐liwe, ┐e bΩdziesz musia│ to wyt│umaczyµ ka┐demu u┐ytkownikowi z osobna na pewno siΩ zyskasz na tym w przysz│o£ci. Swego czasu sporo by│o w│ama± polegaj╣cych na odgadniΩciu trywialnego has│a kt≤rego£ z u┐ytkownik≤w. Nie s╣ wiΩc zalecane imiona ┐on, dzieci, ulubionych dru┐yn. Kombinacje polegaj╣ce na odwr≤ceniu kolejno£ci liter w identyfikatorze u┐ytkownika (np. root toor) czy te┐ elitarne zast╣pienie litery 'O' cyfr╣ '0' s╣ naprawdΩ zbyt oklepane, aby │udziµ siΩ, ┐e nikt tego nie wymy£li. Znaj╣c dan╣ osobΩ │atwo jest znaleƒµ kilka(na£cie) wyraz≤w kt≤re bΩd╣ kojarzyµ siΩ w│a£nie z ni╣. Dobre has│a zawieraj╣ inne dopuszczalne znaki ni┐ litery i cyfry (np. nawiasy, wykrzyknik, znak dolara, plus, kropka itd.). Has│a powinny mieµ odpowiedni╣ d│ugo£µ, a u┐ytkownik powinien mieµ pewn╣ wprawΩ przy ich wpisywaniu bardzo │atwo jest podpatrzeµ has│o gdy kto£ jednym palcem wystukuje 'S│oneczko' lub 'Metallica' z szybko£ci╣ 1 znaku na p≤│ minuty. 4) Zaopatrz siΩ w programy s│u┐╣ce do dostarczania dodatkowych informacj o po│╣czeniach z Twoim komputerem. Przydatne tu bΩd╣ tcp wrappers oraz pakiet iplogger. Odpowiednio skonfigurowane tcp wrappers umo┐liwi╣ na serwowanie wybranych us│ug dla wybranych komputer≤w/sieci (dziΩki plikom /etc/hosts.allow i /etc/hosts.deny) za£ programy z pakietu iplogger bΩd╣ CiΩ informowaµ o wszelkich pr≤bach po│╣cze± z zewn╣trz (pomaga to w wykryciu portscanningu).< 5) Aby wyeliminowaµ denerwuj╣ce informacje o pr≤bach po│╣cze± z setkami port≤w Twojej maszyny, zapoznaj siΩ z programem ipfwadm. Prosty IP-Firewall powinien skutecznie zlikwidowaµ problem zbΩdnych i/lub niemile widzianych po│╣cze±. Je£li tw≤j Linux jest bramk╣ na £wiat dla jakiej£ lokalnej sieci na pewno skorzystasz z mo┐liwo£ci jakie daje IP-Masquerading. 6) Z plik≤w w obrΩbie systemu usu± bity SetUserID (SUID) wszΩdzie tam gdzie s╣ one zbΩdne. 99.9 % w│ama± od srodka' w Linuxie polega na wykorzystaniu takich w│a£nie plik≤w w po│╣czeniu z metodami wywo│ania prze│adowania bufora lub stosu. 7) Stosuj sumy kontrolne plik≤w systemowych s│u┐y do tego kilka program≤ (np. tripwire). DziΩki temu systematycznie bΩdziesz otrzymywa│ raporty na temat stanu plik≤w w systemie, zostaniesz tak┐e zaalarmowany o ka┐dej zmianie. Wyeliminujesz w ten spos≤b ryzyko podmienienia jakiegokolwiek pliku. CzΩsto jest tak, ┐e hacker po w│amaniu stara siΩ zapewniµ sobie sta│y dostΩp do wszystkich zasob≤w systemu. Naj│atwiej jest osi╣gn╣µ to poprzez zamianΩ kt≤rego£ z program≤w odpowiedzialnych za komunikacjΩ zewnΩtrzn╣. Opr≤cz wykonywania standardowych czynno£ci program taki zawiera ukryte tylne drzwi, um w dowolnej chwili. Inni u┐ytkownicy nie zauwa┐╣ ┐adnej zmiany w dzia│aniu maszyny. 8) U£wiadom swoich u┐ytkownik≤w, kt≤rzy czΩsto nie wiedz╣ co czyni╣ ;) Po┐yczanie kont, wymiana hase│ itd. nie powinny mieµ miejsca. Inaczej idea identyfikacji u┐ytkownika w ten spos≤b (system hase│) stanie siΩ bezwarto£ciowa. 9) Stosuj╣c nietypowe konfiguracje, lub przechowuj╣c istotne pliki systemowe w nietypowych miejscach zaskoczysz hacker≤w-rutyniarzy, kt≤rzy pr≤buj╣c w│amaµ siΩ do Twojego systemu potraktuj╣ go jako kolejny ƒle zabezpieczony i niedopilnowany Linuxik, kt≤ry wygl╣da jak setki innych. -------------------------------------------------------------------------------- ParΩ s│≤w na zako±czenie Nie jestem guru od bezpiecze±stwa sieci, nie ma te┐ 100% pewnej metody na zabezpieczenie serwera (to trochΩ tak jak z zabezpieczeniem samochodu przed kradzie┐╣). W zwi╣zku z tym nie mogΩ Ci zagwarantowaµ, ┐e po przeczytaniu tego tekstu Tw≤j Linux zamieni siΩ w fortecΩ nie do zdobycia. Przed prawdziwymi hackerami nie ma chyba skutecznej metody obrony. Oni posiadaj╣ jednak swoj╣ etykietΩ i zwykle nie sprawiaj╣ zbyt wielkich k│opot≤w. Po zastosowaniu siΩ do powy┐szych rad mo┐esz byµ pewien, ┐e odpadnie Ci problem pilnowania systemu przed pseudo-hackerami. S╣ to ludzie, kt≤rzy po us│yszeniu o jakiej£ nowej (wg nich) metodzie w│amania natychmiast pr≤buj╣ wykorzystaµ j╣ na Linuxach w ca│ym £wiecie. Nie wiedz╣ jakie £lady zostawiaj╣, na czym polega spos≤b w│amania liczy siΩ £wietna zabawa czyli utrudnianie pracy innym oraz mo┐liwo£µ powiedzenia znajomym 'jestem the best bo w│ama│em siΩ na X system≤w' (sam znam swoistych rekordzist≤w w tej dziedzinie). Najgorsze jest to, ┐e czasem uda siΩ takiemu w│amaµ gdzie£ i pod pojΩciem '£wietnej zabawy' kryje siΩ na przyk│ad skasowanie ca│ego systemu itp. Chodzi tu chyba o popisanie siΩ przed innymi 'chakerami' tego typu - w ko±cu zrobienie komus 'rm -rf /' to zapewne najbardziej spektakularne widowisko jakie kiedykolwiek widzieli. Chcia│bym aby ten tekst przydatny by│ dla innych administrator≤w, kt≤rzy (mam nadziejΩ) nie mieli jeszcze takich problem≤w